# Pandas数据分析模块
import json

import pandas as pd

from dao.writeToFile import writeToFile
from pyeCharts.pyeCharts import pyeCharts
from utils.calculate import calculate


class pandasService:
    def __init__(self):
        pass

    # 对爬取到的数据进一步的进行处理分析
    @staticmethod
    def parserDataForCommonToDataFrame(city_common_data, filename):
        # columns
        year_list = ['2014', '2015', '2016', '2017', '2018', '2019', '2020', '2021', '2022']
        # index
        city_index = city_common_data.keys()

        common_list = []

        # 遍历数据
        for city, data in city_common_data.items():
            common_data_list = []
            for year_common in data:
                common_data_list.append(list(year_common.values())[0])
            common_list.append(common_data_list[0:9])

        # 构造DataFrame
        # print(json.dumps(common_list, ensure_ascii=False,indent=4))
        df = pd.DataFrame(common_list, index=city_index, columns=year_list)
        # 数据写进Excel文件
        writeToFile.writeDataForCommonToExcel(df, filename)
        # 生成pyeCharts图表
        l = pyeCharts.drawLineForCommon(df, filename)
        pyeCharts.drawMapForDevelopment(df, filename)
        return l

    # 对所有数据进行综合统计
    @staticmethod
    def parserDataFromExcel():
        # 从文件中读取数据
        data_for_gdp = pd.read_excel('Excel\\各地区近10年来GDP(亿元)的变化.xlsx', index_col=0)  # 获得GDP数据
        data_for_university = pd.read_excel('Excel\\各地区近10年来高等院校数量(所)的变化.xlsx',
                                            index_col=0)  # 获取各地区近 10 年来高等院校数量的变化
        data_for_income = pd.read_excel('Excel\\各地区近10年来人均可支配收入水平(元)的变化.xlsx',
                                        index_col=0)  # 各地区近 10 年来人均可支配收入水平变化
        data_for_trade = pd.read_excel('Excel\\各地区近10年来外贸进出口总额(千美元)的变化.xlsx',
                                       index_col=0)  # 获取各地区近 10 年来按经营单位所在地分货物进出口总额
        data_for_medical = pd.read_excel('Excel\\各地区近10年来医疗卫生机构数量(个)的变化.xlsx',
                                         index_col=0)  # 获取各地区近 10 年来医疗卫生机构的数量变化
        data_for_road = pd.read_excel('Excel\\各地区近10年来人均城市道路面积(平方米)的变化.xlsx',
                                      index_col=0)  # 获取各地区近 10 年来人均城市道路面积变化
        data_for_water = pd.read_excel('Excel\\各地区近10年来城市用水普及率(%)的变化.xlsx',
                                       index_col=0)  # 获取各地区近 10 年来城市用水普及率变化
        data_for_forest = pd.read_excel('Excel\\各地区近10年来生活垃圾填埋量(万吨)的变化.xlsx', index_col=0)  # 获取各地区近 10 年来生活垃圾填埋量
        data_for_invention = pd.read_excel('Excel\\各地区近10年来国内发明专利申请受理量(个)的变化.xlsx',
                                           index_col=0)  # 获取各地区近 10
        # 年来国内发明专利申请受理量变化
        data_for_population = pd.read_excel('Excel\\各地区近10年来总人口(万人)的变化.xlsx', index_col=0)  # 获取各地区近 10 年来总人口变化
        columns = [
            'GDP',
            '地区人均可支配收入',
            '普通高等学校的数量',
            '医疗卫生机构的数量',
            '人均城市道路面积',
            '城市用水普及率',
            '生活垃圾填埋量',
            '外贸进出口总额',
            '国内发明专利申请受理量',
            '总人口'
        ]
        index = list(data_for_trade.index)

        # 遍历每一年的数据
        for year in list(data_for_trade.columns):
            year_data = pd.DataFrame(columns=columns, index=index)
            year = str(year)
            year_data['GDP'] = data_for_gdp[year]
            year_data['普通高等学校的数量'] = data_for_university[year]
            year_data['地区人均可支配收入'] = data_for_income[year]
            year_data['外贸进出口总额'] = data_for_trade[year]
            year_data['城市用水普及率'] = data_for_water[year]
            year_data['人均城市道路面积'] = data_for_road[year]
            year_data['生活垃圾填埋量'] = data_for_forest[year]
            year_data['国内发明专利申请受理量'] = data_for_invention[year]
            year_data['医疗卫生机构的数量'] = data_for_medical[year]
            year_data['总人口'] = data_for_population[year]

            filename = f'各地区{year}年综合数据统计'
            calculate.calculateDataForCommon(year_data, filename)
